package com.zqweb.gulimall.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

@Configuration// 需要添加到容器环境中
public class CORS_Config {
    @Bean
    public CorsWebFilter corsFilter(){
        // 1、提供基于URL访问的配置跨域源
        UrlBasedCorsConfigurationSource corsSource = new UrlBasedCorsConfigurationSource();
        // 2、创建Cors跨域配置类，进行具体的跨域配置
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedHeader("*");// 支持的请求头
        config.addAllowedMethod("*");// 支持的请求方式
        config.addAllowedOrigin("*");// 支持的请求源
        config.setAllowCredentials(true);// 支持携带cookie访问
        // 3、将Cors跨域配置类，注册到配置跨域源中，同时指定对哪些请求作跨域配置
        corsSource.registerCorsConfiguration("/**",config);
        // 4、传入Cors跨域配置源，创建CorsWebFilter，并注入到容器中
        return new CorsWebFilter(corsSource);
    }
}
